package 反射;

import java.lang.reflect.Constructor;

//Java通过反射机制操作某个类的属性,步骤所用方法如下：
//
//1. forName()   返回给定串名相应的Class对象。
//
//2. getDeclaredField()  返回当前Class对象表示的类或接口的指定已说明的一个域对象。

//操作某个类的属性
import java.lang.reflect.Field;
public class 设置类属性 {
    private String proprety = null;
    public static void main(String[] args) throws Exception {
        Class<?> clazz = Class.forName("反射.设置类属性");
//        Object obj = clazz.newInstance();
        
        Constructor<?> con=clazz.getDeclaredConstructor();
        Object obj=con.newInstance();

        // 可以直接对 private 的属性赋值
        Field field = clazz.getDeclaredField("proprety");
        field.setAccessible(true);
        field.set(obj, "Java反射机制");
        System.out.println(field.get(obj));
    }
}